.TH getc_putc 8
.SH "NAME"
getc_putc \- program to test hard drive performance.

.SH "SYNOPSIS"
.B getc_putc
.I [\-d dir] [\-s size(KiB)] [-m machine-name]
.I [\-u uid\-to\-use:gid\-to\-use] [\-g gid\-to\-use]

.SH "DESCRIPTION"
This manual page documents briefly the
.BR getc_putc ,
program.
.P
This is a simple adjunct to the
.B bonnie++
benchmark.  It is used to test various ways of doing IO one byte at a time,
usually you don't need to do enough of this for it to be a performance issue
for it to matter much which way you do it.  But sometimes it's necessary (for
example whan parsing IO from a terminal and then launching another process
which will take over all IO, such as a simple shell).
.P
The real benefits of this are to help settle some arguements about the
performance of such things, and to educate novices about how bad per-byte IO
really is.

.SH "OPTIONS"
For getc_putc every option is of the form of a hyphen followed by a letter and
then the next parameter contains the value.
.TP
.B \-d
the directory to use for the tests.
.TP
.B \-s
the size of the file for byte IO performance measured in kilobytes.  NB You can
specify the size in mega\-bytes if you add 'm' to the end of the number.

The default for this test is to test with a 40MiB file.  Of the file only 1/32
of it will be used for write() and read() system calls (anything else takes
too long), and only 1/4 of it will be used for locked getc() and putc().

.TP
.B \-m
name of the machine \- for display purposes only.

.TP
.B \-u
user\-id to use.  When running as root specify the UID to use for the tests.  It
is not recommended to use root, so if you really want to run as root then use
.B \-u root.
Also if you want to specify the group to run as then use the
.B user:group
format.  If you specify a user by name but no group then the primary group of
that user will be chosen.  If you specify a user by number and no group then
the group will be
.B nogroup.

.TP
.B \-g
group\-id to use.  Same as using
.B :group
for the
.B \-u
parameter, just a different way to specify it for compatibility with other
programs.

.TP
.B \-q
quiet mode. If specified then some of the extra informational messages will be
suppressed. Also the csv data will be the only output on standard out and the
plain text data will be on standard error. This means you can run
.B getc_putc \-q >> file.csv
to record your csv data.

.SH "OUTPUT"
The primary output is plain\-text in 80 columns which is designed to fit well
when pasted into email and which will work well with Braille displays.
.P
The second type of output is CSV (Comma Seperated Values).  This can easily be
imported into any spread\-sheet or database program.
.P
For every test the result is a speed in KiB/s.  I do not display the CPU time
because it presumably is 99% of the power of a single CPU (or something very
close to that).

.SH "AUTHOR"
This program, it's manual page, and the Debian package were written by
Russell Coker <russell@coker.com.au>.
.P
The documentation, the Perl scripts, and all the code for testing the creation
of thousands of files was written by Russell Coker, but the entire package is
under joint copyright with Tim Bray.

.SH "SIGNALS"
Handles SIGINT and does a cleanup (which may take some time), a second SIGINT
or a SIGQUIT will cause it to immidiately die.
.P
SIGXCPU and SIGXFSZ act like SIGINT.
.P
Ignores SIGHUP.

.SH "AVAILABILITY"
The source is available from http://www.coker.com.au/bonnie++ .
.P
See http://etbe.coker.com.au/category/benchmark for further information.

.SH "SEE ALSO"
.BR bonnie++ (8),
.BR zcav (8)
